#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int n,m;
char a[200][200];
int vis[200][200];
int flag=0;
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};

void dfs(int x,int y)
{
	if(x==n&&y==m)
	{
		flag=1;
		return;
	}
	
	for(int i=0;i<4;i++)
	{
		int nx=x+dir[i][0];
		int ny=y+dir[i][1];
		if(a[nx][ny]!='#'&&nx>=1&&ny>=1&&nx<=n&&ny<=m&&vis[nx][ny]==0)
		{
			vis[nx][ny]=1;
			dfs(nx,ny);
		}
		
	}
}


int main()
{
	cin >> n >> m;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=m;j++)
		{
			cin >> a[i][j];
		}
	}
	dfs(1,1);
	if(flag==1)
	{
		cout << "Yes" << endl;
	}
	else
	{
		cout << "No" << endl;
	}
	return 0;
}

